
'''
程序启动显示名片管理系统欢迎界面，并显示功能菜单。
功能菜单如下：
1. 新增名片
2. 显示名片
3. 查询名片
0. 退出系统
用户用数字选择不同的功能。
用户名片需要记录用户的姓名、电话、QQ、邮件。
显示名片可以列举出所有已经保存的名片。
如果查询到指定的名片，用户可以选择修改或者删除名片。
'''
cards=[
    ["小宋","1233433","785645465","67575@123.com"]
    ] # 定义一个列表，用来存储所有的名片。


#功能1：新增名片
def CreateCard(): # 定义一个函数，用来新增名片。
    create_card="""************新建名片，并加入cards列表*****************
    """
    print(create_card) # 输出提示信息，告诉用户正在执行新增名片的操作。
    
    name=input("请输入姓名：") # 获取用户输入的姓名。
    phone=input("请输入电话：") # 获取用户输入的电话。
    qq=input("请输入QQ：") # 获取用户输入的QQ。
    email=input("请输入邮箱：") # 获取用户输入的邮箱。
    card=[name,phone,qq,email] # 将用户输入的姓名、电话、QQ、邮箱组成一个列表。
    cards.append(card) # 将新的名片添加到cards列表中。
    
    print("新增名片成功！") # 输出提示信息，告诉用户新增名片成功。
#功能2：显示所有名片
def ShowCard(): # 定义一个函数，用来显示所有的名片。
    show_card="""************显示所有名片*****************
    """
    print(show_card) # 输出提示信息，告诉用户正在执行显示所有名片的操作。
    
    print("姓名\t\t电话\t\tQQ\t\t\t邮箱") # 输出表头，告诉用户名片的信息。
    for i in cards: # 遍历cards列表，注意这里的cards列表是一个列表，里面的元素是字典。
        for j in i:
           print(j,end="\t\t") # 输出字典，注意这里的print函数的参数是一个字典。
        print()
        print("="*60) # 输出分隔线，用来分隔不同的名片。  
          
#功能3：查询名片
def modefy_card(card): # 定义一个函数，用来修改名片。
    modify_card="""************修改名片*****************
    """
    print(modify_card) # 输出提示信息，告诉用户正在执行修改名片的操作。
    card[0]=input("请输入姓名：") # 获取用户输入的姓名。
    card[1]=input("请输入电话：") # 获取用户输入的电话。
    card[2]=input("请输入QQ：") # 获取用户输入的QQ。
    card[3]=input("请输入邮箱：") # 获取用户输入的邮箱。
    print("修改名片成功！") # 输出提示信息，告诉用户修改名片成功。

def delete_card(card): # 定义一个函数，用来删除名片。
    delete_card="""************删除名片*****************
    """
    print(delete_card) # 输出提示信息，告诉用户正在执行删除名片的操作。
    cards.remove(card) # 将名片从cards列表中删除。
    print("删除名片成功！") # 输出提示信息，告诉用户删除名片成功。

def handle_card(card): # 定义一个函数，用来处理查询到的名片。
   while True: # 无限循环，直到用户选择退出系统。 
    action=input("请选择操作功能：1.修改/2.删除/0.返回") # 获取用户输入的功能编号，注意这里的input函数返回的是字符串类型，需要转换成整数类型。
    if action=="1": # 如果用户选择的功能是1，就执行修改名片的操作。
        print("修改名片") # 输出提1示信息，告诉用户正在执行修改名片的操作。
        modefy_card(card)
        break
    elif action=="2": # 如果用户选择的功能是2，就执行删除名片的操作。
        print("删除名片") # 输出提示信息，告诉用户正在执行删除名片的操作。
        delete_card(card)
        break
    elif action=="0": # 如果用户选择的功能是0，就执行返回主菜单的操作。
        print("返回主菜单") # 输出提示信息，告诉用户正在执行返回主菜单的操作。
        break # 退出循环，结束程序。
    else: # 如果用户输入的功能编号不在0~2之间，就输出提示信息，告诉用户输入有误。
        print("输入有误，请重新输入！") # 输出提示信息，告诉用户输入有误。
        
def SearchCard(): # 定义一个函数，用来查询名片。
    search_card="""************根据用户姓名匹配查询名片*****************
    如果查到某人可进行如下操作：
    1.修改
    2.删除
    0.返回主菜单
    """
    print(search_card) # 输出提示信息，告诉用户正在执行查询名片的操作。
    
    query_name=input("请输入要查询的姓名：") # 获取用户输入的姓名。
    for i in cards: # 遍历cards列表，注意这里的cards列表是一个列表，里面的元素是字典。
        if query_name==i[0]: # 如果字典中的姓名等于用户输入的姓名，就找到了要查询的名片。
            print(i) # 输出字典，注意这里的print函数的参数是一个字典。
            print("找到了！")
            handle_card(i)
            break
        #else: # 如果字典中的姓名不等于用户输入的姓名，就没有找到要查询的名片。
           # print("没有找到：%s 这个人！"%query_name)
            #break
    
            

# 1.显示欢迎界面和功能菜单
main_tip="""**************************************
    欢迎使用【名片管理系统】V1.0
    1. 新增名片
    2. 显示名片
    3. 查询名片
    0. 退出系统
**************************************
    """
# 2.获取用户选择的功能
while True: # 无限循环，直到用户选择退出系统。
    print(main_tip) # 输出欢迎界面和功能菜单，注意这里的print函数的参数是一个字符串，需要使用字符串格式化的方式，将变量的值插入到字符串中。
    
    action=(input("请选择操作功能："))# 获取用户输入的功能编号，注意这里的input函数返回的是字符串类型，需要转换成整数类型。
    # 3.根据用户选择的功能，执行相应的操作
    if action=="1": # 如果用户选择的功能是1，就执行新增名片的操作。
        print("新增名片") # 输出提示信息，告诉用户正在执行新增名片的操作。
        CreateCard() # 调用函1数，用来新增名片。注意这里的CreateCard函数的返回值是一个列表。
    elif action=="2": # 如果用户选择的功能是2，就执行显示名片的操作。
        print("显示名片") # 输出提示信息，告诉用户正在执行显示名片的操作。
        ShowCard() # 调用函数，用来显示所有的名片。注意这里的ShowCard函数没有返回值。
    elif action=="3": # 如果用户选择的功能是3，就执行查询名片的操作。   
        print("查询名片") # 输出提示信息，告诉用户正在执行查询名片的操作。
        SearchCard()
    elif action=="4": # 如果用户选择的功能是0，就执行退出系统的操作。
        print("退出系统") # 输出提示信息，告诉用户正在执行退出系统的操作。
        break # 退出循环，结束程序。 
    else: # 如果用户输入的功能编号不在0~3之间，就输出提示信息，告诉用户输入有误。
        print("输入有误，请重新输入！") # 输出提示信息，告诉用户输入有误。
        continue # 继续循环，重新获取用户输入的功能编号。   


  

  

  